package cn.mdmm.service.system;


import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.remoting.service.annotation.RemoteService;

import cn.mdmm.entity.system.MenuTree;
import cn.mdmm.entity.system.SysMenu;
import cn.modoumama.service.base.BaseService;


@RemoteService
public interface SysMenuService extends BaseService<SysMenu,Long>{
	
	/**
	 * 加载所有的菜单
	 * @param expanded 是否展开菜单
	 * @param hideDisableMenus 是否隐藏无效的菜单（被禁用的）
	 * @param button 是否保留按钮级别的功能
	 * @return
	 */
	public List<MenuTree> listTree(boolean expanded,boolean hideDisableMenus,boolean button);	
	
	/**
	 * 加载某个用户拥有权限的菜单
	 * @param userId 用户ID
	 * @param expanded 是否展开菜单
	 * @param button 是否保留按钮级别的功能
	 * @return
	 */
	public List<MenuTree> listUserTree(Long userId,boolean expanded,boolean button);
	
	/**
	 * 获取用户的菜单列表
	 * @param userId
	 * @return
	 */
	public  List<SysMenu>  selectMenusByUserId(Long userId);
	
	public void deleteMenuByIds(String[] menuIds);
	
	/**
	 * 获取最新的菜单，传入上次请求成功的时间
	 * 有更新菜单就返回菜单，没有更新就返回null
	 * @param olDate
	 * @return
	 */
	public Map<Long,String> getAllMenuPowers(Date olDate);
	
	/**
	 * 获取最新的菜单
	 * @return
	 */
	public Map<Long,String> getAllMenuPowers();
	
	/**
	 * 获取最新的权限地址对应权限(url-power)，传入上次请求成功的时间
	 * 有更新菜单就返回菜单，没有更新就返回null
	 * @param olDate
	 * @return
	 */
	public Map<String,String> getAllPowers(Date olDate);
}
